use a single codegen-unit with the dev profile #18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
rust-lang/rust#44853 changed the default number of codegen units from 1 to 32 for the dev profile.
Unfortunately this broke our dev builds so we are reverting the change in the Cargo.toml.
I haven't been able to figure the exact problem but things break at linking time. The related bits
are these:
we have a linker section, in the cortex-m-rt crate, that does that:
Now when compiling with either 1 or 32 codegen units the libcortex_m_rt.rlib library does contain
the EXCEPTIONS symbol and the symbol is placed in the right linker section. AFAICT, the only
different between using 1 or 32 codegen units is that the rlib contains more object files inside
when compiling with 32 codegen units.
My wild guess about what's happening is that since there are more object files the linker is not
looking at all of them so it never looks at the object file that contains the EXCEPTIONS symbol
and that's why it doesn't end up in the final binary.